using Gateway.Infrastructure.AutoDI;
using Gateway.IQuery.Role.Request;
using Gateway.IQuery.Role.Result;

namespace Gateway.IQuery.Role;

/// <summary>
/// 角色查询服务
/// </summary>
public interface IRoleQuery : IDependency
{
    /// <summary>
    /// 获取分页列表
    /// </summary>
    /// <param name="request"></param>
    /// <returns></returns>
    Task<PageResult<RoleDetailResult>> GetPageList(RolePageListRequest request);

    /// <summary>
    /// 获取角色详情
    /// </summary>
    /// <param name="id">角色标识</param>
    /// <returns></returns>
    Task<RoleDetailResult> GetDetail(string id);


    /// <summary>
    /// 获取可用有效的列表
    /// </summary>
    /// <returns></returns>
    Task<List<RoleSimpleResult>> GetAvailableList();


    /// <summary>
    /// 根据集合获取列表
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    Task<List<RoleSimpleResult>> GetListByIds(List<string> ids);
}